#ifndef __TEAMAKERMSG_H__
#define __TEAMAKERMSG_H__

// Qt Includes
#include <QtCore>

// Qt Declarations
class QDataStream;

// Local Declarations
class CTeaMakerPingMsg;

// ************************************************************
// CTeaMakerMsg
// ************************************************************
class CTeaMakerMsg
{
public:
// Enums
	enum TeaMakerMessageType
	{
		UnknownMessage = 0,
		PingMessage
	};

// Construction & Destruction
	CTeaMakerMsg(TeaMakerMessageType messageType = UnknownMessage);
	virtual ~CTeaMakerMsg();

// Static Functions
	static CTeaMakerMsg *getMessageFromDataStream(QDataStream &dataStream);
	
	// Message Creation Helpers
	static CTeaMakerPingMsg *createPingMessage();

// Member Functions
	TeaMakerMessageType getMessageType() const { return m_MessageType; }
	virtual bool serialiseMessage(QDataStream &dataStream,
		bool bSave);

protected:
// Member Functions
	virtual bool serialiseMessageData(QDataStream &dataStream,
		bool bSave);

// Member Variables
	TeaMakerMessageType m_MessageType;
};

#endif // __TEAMAKERMSG_H__
